//在rpc客户端，我们通过UserService_Stub(RpcChannel)方法调用所有的方法的时候，
//它最终都是把方法都调用到我们传入的这个RpcChannel的CallMethod上了,
//在这里就集中来做rpc方法调用的参数的序列化和网络发送了
//但是RpcChannel是一个纯虚函数，实例化不出对象来，所以我们需要对它进行重写
#pragma once
#include<google/protobuf/service.h>
#include<google/protobuf/descriptor.h>
#include<google/protobuf/message.h>

class MprpcChannel:public google::protobuf::RpcChannel
{
    //所有通过stub代理对象调用的rpc方法，都是走到了这里，统一做rpc方法调用的数据序列化和网络发送
    void CallMethod(const google::protobuf::MethodDescriptor* method,
        google::protobuf::RpcController* controller, 
        const google::protobuf::Message* request,
        google::protobuf::Message* response, 
        google::protobuf::Closure* done);
};
      